﻿using ExcellentProjectPlus.Dominio.Catalogos.Entidades;
using ExcellentProjectPlus.Dominio.Catalogos.Repositorios;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ExcellentProjectPlus.Dominio.Catalogos.Servicios.Catalogos
{
    public class ServicioDeAdministracionDeCatalogos
        : IServicioDeAdministracionDeCatalogos
    {
        #region Atributos
        IUnidadDeTrabajoCatalogos _unidadDeTrabajo;
        #endregion

        #region Constructores
        public ServicioDeAdministracionDeCatalogos(IUnidadDeTrabajoCatalogos unidadDeTrabajo)
        {
            _unidadDeTrabajo = unidadDeTrabajo;
        }
        #endregion
        public IEnumerable<Catalogo> ObtenerCatalogos()
        {
            return _unidadDeTrabajo.RepositorioCatalogos.Obtener();
        }

        public IEnumerable<Catalogo> ObtenerCatalogosPaginado(int pagina, int tamanio)
        {
            return _unidadDeTrabajo.RepositorioCatalogos.Obtener(orderBy: c => c.OrderBy(cat => cat.NombreCatalogo),
                page: pagina, pageSize: tamanio);
        }

        public Catalogo ObtenerCatalogoPorId(int id)
        {
            return _unidadDeTrabajo.RepositorioCatalogos.ObtenerPorId(id);
        }

        public void AgregarCatalogo(Catalogo catalogo)
        {
            _unidadDeTrabajo.RepositorioCatalogos.Agregar(catalogo);
            _unidadDeTrabajo.Confirmar();
        }

        public void ModificarCatalogo(Catalogo catalogo)
        {
            _unidadDeTrabajo.RepositorioCatalogos.Modificar(catalogo);
            _unidadDeTrabajo.Confirmar();
        }

        public void EliminarCatalogo(Catalogo catalogo)
        {
            _unidadDeTrabajo.RepositorioCatalogos.Eliminar(catalogo);
            _unidadDeTrabajo.Confirmar();
        }
    }
}
